查看原文
其他

直接用IP访问知乎,我发现了一个秘密...

The following article is from 帅地玩编程 Author 帅地

(给程序员零距离加星标,了解项目开发.)

粉丝福利:小编会从今天留言中抽选3名小伙伴赠送现金红包,感谢大家一直以来的支持!文末见喽!

本文字数:1000字

阅读本文大概需要:3 分钟


我们先来ping知乎的域名,然后可以得到响应的服务器的ip,


之后我们用浏览器来访问这个ip,结果如下


被拒绝访问了。

而用ip来访问百度,则没啥问题,如图


访问知乎的时候,域名可以访问,ip不可以访问,这究竟是为啥?

我们知道,ipv4的ip地址是非常有限的,如果每个人都想拥有一个全球ip,那肯定是不够分配的。

所以,很多网站在发布的时候,是有可能几个域名共用一个CDN服务器的。


稍微解释下CDN是啥: CDN服务器可以说是一种缓存服务器。当我们要访问某个网站的资源时,如果该网站的服务器离我们很远,这样的话响应速度就会很慢,为了让响应速度快一些,我们可以把资源分布放在各个地方,然后响应客户端的时候,把离客户端较近的资源传送给他。

当我们用域名访问知乎的时候,CDN服务器可以根据访问的域名知道你想要的是哪个网站的资源,然后直接给你返回对应的资源。

但是当你用公网ip访问就不一样了,由于一个CDN服务器的公网ip对应多个域名网站,他不知道你想要的是哪个网站的资源,也就是说,当你用 118.89.204.192 去访问知乎的时候,CDN服务器不知道你要访问的是 zhihu.com,还是访问 a.com 或 b.com,所以他也干脆明了点,直接拒绝你的访问。

有人可能会问,我输入域名之后,DNS服务器帮我自动解析成对应的ip,去访问知乎的时候,也还是用ip访问的啊,这貌似和ip访问没啥区别啊。

确实,访问的时候,DNS服务器都会帮们我把域名解析成ip去访问,CDN服务器之所以能够检测到对应的域名,其实是这样的:

当客户端用域名访问知乎的时候,DNS会解析成对应的ip去访问CDN服务器,然后CDN服务器可以根据SNI机制获得该ip对应的来源域名,然后返回对应的资源。

这里稍微简单粗暴解释下SNI机制: 该机制主要是用来解决一个服务器对应多个域名时产生的一些问题,通过这种机制,服务器可以提前知道(还没建立链接)客户端想要访问的网站。

知道了用域名可以访问知乎,而用ip不可以访问知乎之后,我们再来说说百度。

为啥百度ip和域名都可以访问呢?

这其实很简单,就是百度用的CDN服务器,只对应一个网站域名呗,说白了,就是百度有钱!


PS:在小编的认知范围内,好像上文所述并非完全正确,你认为呢?欢迎大家留言自己的看法解释,大家一起探讨下~


- END -

1、你可能永远都搞不懂了图灵机了!

2、不需要显卡也能挖矿?矿工们这次盯上了SSD:严防问题二手SSD

3、当特斯拉遇到CPU,会发生什么?

4、免翻!可看油管视频,号称国内YouTube!

5、提醒!恢复出厂不靠谱,旧手机仍有“记忆”!

6、182.28亿!阿里遭遇中国史上最大额罚款

7、一粒米?最小电脑竟然那么小?

8、哈哈哈哈,这个勒索软件笑死我了!

更多精彩等待你的发现点分享点点赞点在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存